#ifndef __WHIMSY_NETWORK_PROPERTY_VISITOR_HPP__SHANHAOBO_19800429__
#define __WHIMSY_NETWORK_PROPERTY_VISITOR_HPP__SHANHAOBO_19800429__

#include "./WhimsyNetworkForwardDeclare.hpp"

namespace Whms
{
    namespace Network
    {
        namespace Property
        {
            namespace Visitor
            {
                namespace Base
                {
                    struct Type : public ::Whms::Property::Visitor::Type
                    {
                        typedef ::Wiz::Array::Type<::Whms::Size::Type>  tArraySize;

                        ::Whms::Network::Archive::Type  m_Archive;
                        tArraySize                      m_SerializedSizeArray;

                        virtual ::Whms::Void::Type Visit(::Whms::Property::Base::Int8::Ref);
                        virtual ::Whms::Void::Type Visit(::Whms::Property::Base::Int16::Ref);
                        virtual ::Whms::Void::Type Visit(::Whms::Property::Base::Int32::Ref);
                        virtual ::Whms::Void::Type Visit(::Whms::Property::Base::Int64::Ref);

                        virtual ::Whms::Void::Type Visit(::Whms::Property::Base::UInt8::Ref);
                        virtual ::Whms::Void::Type Visit(::Whms::Property::Base::UInt16::Ref);
                        virtual ::Whms::Void::Type Visit(::Whms::Property::Base::UInt32::Ref);
                        virtual ::Whms::Void::Type Visit(::Whms::Property::Base::UInt64::Ref);

                        virtual ::Whms::Void::Type Visit(::Whms::Property::Base::Real32::Ref);
                        virtual ::Whms::Void::Type Visit(::Whms::Property::Base::Real64::Ref);

                        virtual ::Whms::Void::Type Visit(::Whms::Property::Base::Vec2::Ref);
                        virtual ::Whms::Void::Type Visit(::Whms::Property::Base::Vec3::Ref);
                        virtual ::Whms::Void::Type Visit(::Whms::Property::Base::Vec4::Ref);

                        virtual ::Whms::Void::Type Visit(::Whms::Property::Base::IntVec2::Ref);
                        virtual ::Whms::Void::Type Visit(::Whms::Property::Base::IntVec3::Ref);
                        virtual ::Whms::Void::Type Visit(::Whms::Property::Base::IntVec4::Ref);

                    };
                } /// end of namespace Base

                struct Type : public ::Whms::Network::Property::Visitor::Base::Type
                {
                    ::Wiz::Void::Type   MakeParcel(::Whms::Network::Parcel::Array::Out outPrcls, ::Whms::Property::Array::In InPropArray);
                };
            } /// end of namespace Visitor
        } /// end of namespace Property
    } /// end of namespace Network
} /// end of namespace Whim

#endif /*__WHIMSY_NETWORK_PROPERTY_VISITOR_HPP__SHANHAOBO_19800429__*/
